import numpy as np
from PIL import Image
import matplotlib.pyplot as plt

face = Image.open('face.png')
im = np.array(face)
#3 单通道生成
# 1. 提取绿色通道
im_green = im.copy()  # 复制原数组，避免修改原图
im_green[:, :, 0] = 0  # 红色通道置 0
im_green[:, :, 2] = 0  # 蓝色通道置 0

# 显示原图和绿色通道图
plt.figure(figsize=(10, 5))
plt.subplot(1, 2, 1)
plt.imshow(im)
plt.title("原图")
plt.axis("off")

plt.subplot(1, 2, 2)
plt.imshow(im_green)
plt.title("绿色通道图")
plt.axis("off")

plt.tight_layout()
plt.show()

# 保存绿色通道图片
save_filename = "numpy_green.png"
Image.fromarray(im_green).save(save_filename)
print(f"绿色通道图片已保存为: {save_filename}")

# 2. 提取红色通道（修正缩进错误）
im_red = im.copy()  # 此处去除多余缩进，与其他通道代码对齐
im_red[:, :, 1] = 0  # 绿色通道置 0
im_red[:, :, 2] = 0  # 蓝色通道置 0

# 显示原图和红色通道图
plt.figure(figsize=(10, 5))
plt.subplot(1, 2, 1)
plt.imshow(im)
plt.title("原图")
plt.axis("off")

plt.subplot(1, 2, 2)
plt.imshow(im_red)
plt.title("红色通道图")
plt.axis("off")

plt.tight_layout()
plt.show()

#保存红色的通道图片
save_filename = "numpy_red.png"
Image.fromarray(im_red).save(save_filename)
print(f"红色通道图片已保存为: {save_filename}")

# 3. 提取蓝色通道（修正蓝色通道置0的笔误）
im_blue = im.copy()
im_blue[:, :, 0] = 0  # 红色通道置 0
im_blue[:, :, 1] = 0  # 绿色通道置 0（原代码误写为“蓝色通道”，已修正）

# 显示原图和蓝色通道图
plt.figure(figsize=(10, 5))
plt.subplot(1, 2, 1)
plt.imshow(im)
plt.title("原图")
plt.axis("off")

plt.subplot(1, 2, 2)
plt.imshow(im_blue)
plt.title("蓝色通道图")
plt.axis("off")

plt.tight_layout()
plt.show()

# 保存蓝色通道图片
save_filename = "numpy_blue.png"
Image.fromarray(im_blue).save(save_filename)
print(f"蓝色通道图片已保存为: {save_filename}")
